氣泡排序法,顧名思義它在排序的過程,值的排序過程會有點像泡泡上升一樣。
假設有一陣列[7,5,1,20,8]
第一輪排序為[5,7,1,20,8]
第二輪排序為[5,1,7,20,8]
第三輪排序為[5,1,7,20,8]
第四輪排序為[5,1,7,8,20]
以上我們已經初步迴圈過4輪,為何不跑第5輪呢?因為我們發現最後一個數字不需要比較排序,在第4輪就已經排序好了,所以在寫氣泡排序法時候,就可以array length - 1輪地去跑迴圈,而又發現在第4輪還無法將整個陣列完整排序好,所以需要一直遞迴地去排序。
function bubbleSort(arr){
let compareCount=arr.length;
//We don't need to compare the last item because the last two element has been compared and changed in the last second time.
while(compareCount-1>0){
compareCount--;
for(let i=0;i<compareCount;i++){
//If the right value is bigger than left value we need to change their position.
if(arr[i]>arr[i+1]){
[arr[i],arr[i+1]]=[arr[i+1],arr[i]];
}
}
}
return arr;
}
const arr=[7,5,1,20,8];
console.log(bubbleSort(arr));
return [ 1, 5, 7, 8, 20 ]